package com.dkm.nettysocketdemo.myWebsite.service.impl;

import com.dkm.nettysocketdemo.myWebsite.dao.HelmetTaskMapper;
import com.dkm.nettysocketdemo.myWebsite.domain.HelmetTask;
import com.dkm.nettysocketdemo.myWebsite.domain.HelmetUser;
import com.dkm.nettysocketdemo.myWebsite.service.HelmetTaskService;
import com.dkm.nettysocketdemo.untils.Tools;
import com.dkm.nettysocketdemo.untils.redis.RedisOperator;
import com.github.pagehelper.PageHelper;
import com.google.gson.Gson;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;

import javax.annotation.Resource;
import java.util.List;
import java.util.UUID;

/**
 *  @ClassName : HelmetTaskServiceImpl  //类名
 *  @Description : service  //描述
 *  @Author : 石智诚  //作者
 *  @Date: 2021-03-15 10:56  //时间
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class HelmetTaskServiceImpl  implements HelmetTaskService {
    /**
     * 任务服务接口
     */
    @Resource
    HelmetTaskMapper helmetTaskMapper;
    /**
     * redis
     */
    @Resource
    RedisOperator redisOperator;
    Gson gson=new Gson();

    /**
     *
     * @param pkTaskId 任务id
     * @return 回调函数
     */
    @Override
    public int deleteByPrimaryKey(String pkTaskId) {
        int row = helmetTaskMapper.deleteByPrimaryKey(pkTaskId);
        if (row>0) {
            redisOperator.del(pkTaskId);
        }
        return helmetTaskMapper.deleteByPrimaryKey(pkTaskId);
    }

    /**
     * 增加任务
     * @param record 任务模型
     * @return 回调函数
     */
    @Override
    public int insertSelective(HelmetTask record) {
        record.setIsRevision("1");
        String replace =  UUID.randomUUID().toString().replace("-", "");
        record.setPkTaskId(replace);
        int row = helmetTaskMapper.insertSelective(record);
        if (row>0) {
            redisOperator.set(record.getPkTaskId(),gson.toJson(record));
        }
        return row;
    }

    /**
     * 根据id 查询任务
     * @param pkTaskId 任务模型
     * @return HelmetTask
     */
    @Override
    public HelmetTask selectByPrimaryKey(String pkTaskId) {
        HelmetTask helmetTasko = gson.fromJson((String)redisOperator.get(pkTaskId),HelmetTask.class);
        if (ObjectUtils.isEmpty(helmetTasko)){
            helmetTasko = helmetTaskMapper.selectByPrimaryKey(pkTaskId);
            redisOperator.set(pkTaskId,gson.toJson(helmetTasko));
        }
        return helmetTasko;
    }

    /**
     * 更新任务
     * @param record 任务模型
     * @return 回调函数
     */
    @Override
    public int updateByPrimaryKeySelective(HelmetTask record) {
        int row = helmetTaskMapper.updateByPrimaryKeySelective(record);
        if (row>0) {
          HelmetTask  helmetTask = helmetTaskMapper.selectByPrimaryKey(record.getPkTaskId());
            redisOperator.set(record.getPkTaskId(),gson.toJson(helmetTask));
        }
        return row;
    }

    /**
     * 查询所有任务
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param task 任务模型
     * @param page 页面
     * @param limit 显示的数量
     * @return 集合
     */
    @Override
    public List<HelmetTask> findAll(String startTime, String endTime, HelmetTask task, Integer page, Integer limit) {
        PageHelper.startPage(page,limit);
        return helmetTaskMapper.findAll(startTime,endTime,task);
    }

    /**
     * 统计所有有效的
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param task 任务模型
     * @return 回调函数
     */
    @Override
    public Integer rowCount(String startTime, String endTime, HelmetTask task) {
        return  helmetTaskMapper.rowCount(startTime,endTime,task);
    }
}
